home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / lang / SmallEiffel.lha / SmallEiffel / bin_c / compile_to_jvm38.c < prev    next >
C/C++ Source or Header  |  1998-12-22  |  47KB  |  2,218 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                 http://www.loria.fr/SmallEiffel              --
  7. */
  8. #include "compile_to_jvm.h"
  9. /*No:E_INSPECT.clear_current_type*/
  10. /*No:E_INSPECT.nb_errors*/
  11. /*No:E_INSPECT.else_position*/
  12. /*No:E_INSPECT.start_position*/
  13.  
  14.  
  15. T0* r236twin(T236* C){
  16. T0* R=NULL;
  17. R=malloc(sizeof(*C));
  18. *((T236*)R)=*C;
  19. return R;
  20. }
  21.  
  22.  
  23. void r236add_when(T236* C,T0* a1){
  24. /*[IF*/
  25. if(((C)->_when_list/*12*/)==((void*)(NULL))){
  26. {T238*n=malloc(sizeof(*n));
  27. *n=M238;
  28. /*[IRF3.3make*/((((T238*)(n)))->_list)=(se_ma239(1,
  29. a1));
  30. /*]*/
  31. C->_when_list=(T0*)n;
  32. }
  33. }
  34. else{
  35. /*[IRF3.5add_last*/r239add_last(((T239*)(((T238*)((C)->_when_list/*12*/))->_list/*4*/)),a1);
  36. /*]*/
  37. }
  38. /*FI]*/
  39. }
  40. /*No:E_INSPECT.set_when_list*/
  41.  
  42.  
  43. T0* r236add_comment(T236* C,T0* a1){
  44. T0* R=NULL;
  45. /*[IF*/
  46. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
  47. R=(T0*)C;
  48. }
  49.  else {/*AT*//*[IF*/
  50. if((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(1)){
  51. R=(T0*)C;
  52. }
  53. else{
  54. {T229*n=malloc(sizeof(*n));
  55. *n=M229;
  56. r229make(n,(T0*)C,a1);
  57. R=(T0*)n;
  58. }
  59. }
  60. /*FI]*/
  61. }
  62. /*FI]*/
  63. return R;
  64. }
  65.  
  66.  
  67. void r236set_else_compound(T236* C,T0* a1,T0* a2){
  68. C->_else_position=a1;
  69. C->_else_compound=a2;
  70. }
  71. /*No:E_INSPECT.expression*/
  72. /*No:E_INSPECT.em1*/
  73.  
  74.  
  75. T6 r236use_current(T236* C){
  76. T6 R=0;
  77. R=(R)||(X109use_current((C)->_expression/*8*/));
  78. /*[IF*/
  79. if(((C)->_when_list/*12*/)!=((void*)(NULL))){
  80. R=(R)||(r238use_current((T238*)((C)->_when_list/*12*/)));
  81. }
  82. /*FI]*/
  83. /*[IF*/
  84. if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
  85. R=(R)||(r220use_current((T220*)((C)->_else_compound/*20*/)));
  86. }
  87. /*FI]*/
  88. return R;
  89. }
  90.  
  91.  
  92. T0* r236to_runnable(T236* C,T0* a1){
  93. T0* R=NULL;
  94. T0* _wl=NULL;
  95. T0* _te=NULL;
  96. T0* _e=NULL;
  97. /*[IF*/
  98. if(((C)->_current_type/*24*/)==((void*)(NULL))){
  99. C->_current_type=a1;
  100. _e=X109to_runnable((C)->_expression/*8*/,a1);
  101. /*[IF*/
  102. if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
  103. C->_expression=_e;
  104. _te=X52run_type(X109result_type(_e));
  105. }
  106. /*FI]*/
  107. /*[IF*/
  108. if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
  109. /*[IF*/
  110. if(X52is_character(_te)){
  111. /*[IF*/
  112. if(((C)->_when_list/*12*/)!=((void*)(NULL))){
  113. C->_when_list=r238to_runnable_character((T238*)((C)->_when_list/*12*/),(T0*)C);
  114. /*[IF*/
  115. if(((C)->_when_list/*12*/)==((void*)(NULL))){
  116. r236error((C)->_start_position/*4*/,((T0*)ms236_11604));
  117. }
  118. /*FI]*/
  119. }
  120. /*FI]*/
  121. }
  122.  else if(X52is_integer(_te)){
  123. /*[IF*/
  124. if(((C)->_when_list/*12*/)!=((void*)(NULL))){
  125. C->_when_list=r238to_runnable_integer((T238*)((C)->_when_list/*12*/),(T0*)C);
  126. /*[IF*/
  127. if(((C)->_when_list/*12*/)==((void*)(NULL))){
  128. r236error((C)->_start_position/*4*/,((T0*)ms236_11604));
  129. }
  130. /*FI]*/
  131. }
  132. /*FI]*/
  133. }
  134. else{
  135. /*[IRF3.6append*/{T0* b1=((T0*)ms236_94840);
  136. r7append((T7*)(oBC21explanation),b1);
  137. }/*]*/
  138. r21add_type(_te,((T0*)ms236_18320));
  139. r21add_position((C)->_start_position/*4*/);
  140. r21print_as_error((T21*)(oBC12eh));
  141. }
  142. /*FI]*/
  143. }
  144. /*FI]*/
  145. /*[IF*/
  146. if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
  147. C->_else_compound=r220to_runnable((T220*)((C)->_else_compound/*20*/),a1);
  148. }
  149. /*FI]*/
  150. R=(T0*)C;
  151. }
  152. else{
  153. R=r236twin(C);
  154. {T238*n=malloc(sizeof(*n));
  155. *n=M238;
  156. r238from_when_list(n,(C)->_when_list/*12*/);
  157. _wl=(T0*)n;
  158. }
  159. /*[IRF3.3set_when_list*/((((T236*)(((T236*)R))))->_when_list)=(_wl);
  160. /*]*/
  161. /*[IRF3.3clear_current_type*/((((T236*)(((T236*)R))))->_current_type)=(NULL);
  162. /*]*/
  163. R=r236to_runnable(((T236*)R),a1);
  164. }
  165. /*FI]*/
  166. return R;
  167. }
  168. /*No:E_INSPECT.else_compound*/
  169. /*No:E_INSPECT.current_type*/
  170. /*No:E_INSPECT.is_pre_computable*/
  171.  
  172.  
  173. void r236error(T0* a1,T0* a2){
  174. r21add_position(a1);
  175. r21error((T21*)(oBC12eh),a2);
  176. }
  177. /*No:E_INSPECT.end_mark_comment*/
  178.  
  179.  
  180. void r236make(T236* C,T0* a1,T0* a2){
  181. C->_start_position=a1;
  182. C->_expression=a2;
  183. }
  184. /*No:E_INSPECT.includes*/
  185. /*No:E_INSPECT.when_list*/
  186.  
  187.  
  188. void r236compile_to_jvm(T236* C){
  189. X109compile_to_jvm((C)->_expression/*8*/);
  190. /*[IF*/
  191. if(((C)->_when_list/*12*/)!=((void*)(NULL))){
  192. r238compile_to_jvm((T238*)((C)->_when_list/*12*/),(C)->_else_position/*16*/);
  193. }
  194. /*FI]*/
  195. /*[IF*/
  196. if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
  197. r220compile_to_jvm((T220*)((C)->_else_compound/*20*/));
  198. }
  199.  else if(((C)->_else_position/*16*/)==((void*)(NULL))){
  200. /*[IF*/
  201. if(r76no_check((T76*)(oBC12run_control))){
  202. r28runtime_error_inspect((T28*)(oBC12code_attribute),(C)->_expression/*8*/);
  203. }
  204. /*FI]*/
  205. }
  206. /*FI]*/
  207. /*[IF*/
  208. if(((C)->_when_list/*12*/)!=((void*)(NULL))){
  209. r238compile_to_jvm_resolve_branch((T238*)((C)->_when_list/*12*/));
  210. }
  211. /*FI]*/
  212. /*[IRF3.4opcode_pop*/r28opcode((T28*)(oBC12code_attribute),87,-(1));
  213. /*]*/
  214. }
  215.  
  216.  
  217. void r236afd_check(T236* C){
  218. X109afd_check((C)->_expression/*8*/);
  219. /*[IF*/
  220. if(((C)->_when_list/*12*/)!=((void*)(NULL))){
  221. r238afd_check((T238*)((C)->_when_list/*12*/));
  222. }
  223. /*FI]*/
  224. /*[IF*/
  225. if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
  226. r220afd_check((T220*)((C)->_else_compound/*20*/));
  227. }
  228. /*FI]*/
  229. }
  230. /*No:ARGUMENT_NAME1.static_value*/
  231. /*No:ARGUMENT_NAME1.is_static*/
  232. /*No:ARGUMENT_NAME1.is_manifest_string*/
  233. /*No:ARGUMENT_NAME1.start_position*/
  234. /*No:ARGUMENT_NAME1.to_string*/
  235.  
  236.  
  237. T0* r194add_comment(T194* C,T0* a1){
  238. T0* R=NULL;
  239. /*[IF*/
  240. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
  241. R=(T0*)C;
  242. }
  243. else{
  244. {T234*n=malloc(sizeof(*n));
  245. *n=M234;
  246. r234make(n,(T0*)C,a1);
  247. R=(T0*)n;
  248. }
  249. }
  250. /*FI]*/
  251. return R;
  252. }
  253. /*No:ARGUMENT_NAME1.rank*/
  254.  
  255.  
  256. T2 r194to_integer(T194* C){
  257. T2 R=0;
  258. r194error((C)->_start_position/*4*/,((T0*)ms13_45846));
  259. return R;
  260. }
  261. /*No:ARGUMENT_NAME1.use_current*/
  262.  
  263.  
  264. T2 r194jvm_branch_if_true(T194* C){
  265. T2 R=0;
  266. r194compile_to_jvm(C);
  267. R=r28opcode_ifne((T28*)(oBC12code_attribute));
  268. return R;
  269. }
  270.  
  271.  
  272. T0* r194to_runnable(T194* C,T0* a1){
  273. T0* R=NULL;
  274. T0* _rt=NULL;
  275. _rt=X52to_runnable((C)->_result_type/*12*/,a1);
  276. /*[IF*/
  277. if((_rt)==((void*)(NULL))){
  278. r21add_position(X52start_position((C)->_result_type/*12*/));
  279. r194error((C)->_start_position/*4*/,((T0*)ms194_13065));
  280. }
  281. /*FI]*/
  282. /*[IF*/
  283. if(((C)->_result_type/*12*/)==((void*)(_rt))){
  284. R=(T0*)C;
  285. }
  286. else{
  287. R=r194twin(C);
  288. /*[IRF3.3set_result_type*/((((T194*)(((T194*)R))))->_result_type)=(_rt);
  289. /*]*/
  290. }
  291. /*FI]*/
  292. return R;
  293. }
  294.  
  295.  
  296. T2 r194compile_to_jvm_into(T194* C,T0* a1){
  297. T2 R=0;
  298. R=r194standard_compile_to_jvm_into(C,a1);
  299. return R;
  300. }
  301. /*No:ARGUMENT_NAME1.is_pre_computable*/
  302. /*No:ARGUMENT_NAME1.fz_iinaiv*/
  303. /*No:ARGUMENT_NAME1.result_type*/
  304.  
  305.  
  306. void r194standard_compile_target_to_jvm(T194* C){
  307. r194compile_to_jvm(C);
  308. X52jvm_check_class_invariant((C)->_result_type/*12*/);
  309. }
  310. /*No:ARGUMENT_NAME1.compile_to_jvm_assignment*/
  311. /*No:ARGUMENT_NAME1.compile_to_jvm_old*/
  312. /*No:ARGUMENT_NAME1.jvm_assign*/
  313.  
  314.  
  315. T2 r194jvm_branch_if_false(T194* C){
  316. T2 R=0;
  317. r194compile_to_jvm(C);
  318. R=r28opcode_ifeq((T28*)(oBC12code_attribute));
  319. return R;
  320. }
  321.  
  322.  
  323. void r194compile_to_jvm(T194* C){
  324. T2 _jvm_offset=0;
  325. _jvm_offset=r24argument_offset_of((T24*)(oBC12jvm),(T0*)C);
  326. X52jvm_push_local(X52run_type((C)->_result_type/*12*/),_jvm_offset);
  327. }
  328.  
  329.  
  330. T0* r194base_class_written(T194* C){
  331. T0* R=NULL;
  332. R=r70base_class((T70*)(r194written_in(C)));
  333. return R;
  334. }
  335. /*No:ARGUMENT_NAME1.is_result*/
  336. /*No:ARGUMENT_NAME1.can_be_dropped*/
  337.  
  338.  
  339. T0* r194twin(T194* C){
  340. T0* R=NULL;
  341. R=malloc(sizeof(*C));
  342. *((T194*)R)=*C;
  343. return R;
  344. }
  345. /*No:ARGUMENT_NAME1.name_clash*/
  346. /*No:ARGUMENT_NAME1.compile_target_to_jvm*/
  347. /*No:ARGUMENT_NAME1.isa_dca_inline_argument*/
  348.  
  349.  
  350. T0* r194written_in(T194* C){
  351. T0* R=NULL;
  352. T0* _sp=NULL;
  353. _sp=(C)->_start_position/*4*/;
  354. /*[IF*/
  355. if((_sp)!=((void*)(NULL))){
  356. R=(((T59*)_sp))->_base_class_name/*0*/;
  357. }
  358. /*FI]*/
  359. return R;
  360. }
  361. /*No:ARGUMENT_NAME1.set_result_type*/
  362.  
  363.  
  364. void r194name_clash_for(T194* C,T0* a1,T0* a2){
  365. T0* _bc=NULL;
  366. T0* _rc=NULL;
  367. T0* _rf=NULL;
  368. _bc=r194base_class_written(C);
  369. /*[IF*/
  370. if(r63has_simple_feature_name(((T63*)_bc),(C)->_to_string/*8*/)){
  371. _rc=X52run_class(a1);
  372. _rf=r23get_feature_with(((T23*)_rc),(C)->_to_string/*8*/);
  373. /*[IF*/
  374. if((_rf)!=((void*)(NULL))){
  375. r21add_position(X27start_position(_rf));
  376. }
  377. /*FI]*/
  378. r194error((C)->_start_position/*4*/,a2);
  379. }
  380. /*FI]*/
  381. }
  382.  
  383.  
  384. void r194error(T0* a1,T0* a2){
  385. r21add_position(a1);
  386. r21error((T21*)(oBC12eh),a2);
  387. }
  388. /*No:ARGUMENT_NAME1.set_rank*/
  389.  
  390.  
  391. void r194make(T194* C,T0* a1,T0* a2){
  392. C->_start_position=a1;
  393. C->_to_string=r86item(a2);
  394. }
  395. /*No:ARGUMENT_NAME1.is_current*/
  396.  
  397.  
  398. T2 r194standard_compile_to_jvm_into(T194* C,T0* a1){
  399. T2 R=0;
  400. r194compile_to_jvm(C);
  401. R=X52jvm_convert_to(X52run_type((C)->_result_type/*12*/),a1);
  402. return R;
  403. }
  404. /*No:ARGUMENT_NAME1.is_void*/
  405. /*No:ARGUMENT_NAME1.afd_check*/
  406. /*No:PROC_CALL_1.feature_name*/
  407.  
  408.  
  409. void r167run_feature_match(T167* C,T0* a1){
  410. r167run_feature_has_no_result(C);
  411. r152match_with((T152*)((C)->_arguments/*16*/),(C)->_run_feature/*12*/,a1);
  412. }
  413. /*No:PROC_CALL_1.arguments*/
  414.  
  415.  
  416. T0* r167runnable_expression(T0* a1,T0* a2){
  417. T0* R=NULL;
  418. R=X109to_runnable(a1,a2);
  419. /*[IF*/
  420. if((R)==((void*)(NULL))){
  421. r21add_position(X109start_position(a1));
  422. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms121_16515);
  423. r21fatal_error((T21*)(oBC12eh),b1);
  424. }/*]*/
  425. }
  426. /*FI]*/
  427. return R;
  428. }
  429.  
  430.  
  431. T0* r167start_position(T167* C){
  432. T0* R=NULL;
  433. R=X50start_position((C)->_feature_name/*8*/);
  434. return R;
  435. }
  436.  
  437.  
  438. T0* r167add_comment(T167* C,T0* a1){
  439. T0* R=NULL;
  440. /*[IF*/
  441. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
  442. R=(T0*)C;
  443. }
  444. /*AF*/else{
  445. {T229*n=malloc(sizeof(*n));
  446. *n=M229;
  447. r229make(n,(T0*)C,a1);
  448. R=(T0*)n;
  449. }
  450. }
  451. /*FI]*/
  452. return R;
  453. }
  454.  
  455.  
  456. void r167run_feature_has_no_result(T167* C){
  457. /*[IF*/
  458. if((X27result_type((C)->_run_feature/*12*/))!=((void*)(NULL))){
  459. r21add_position(X27start_position((C)->_run_feature/*12*/));
  460. r21add_position(X50start_position((C)->_feature_name/*8*/));
  461. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms165_67122);
  462. r21fatal_error((T21*)(oBC12eh),b1);
  463. }/*]*/
  464. }
  465. /*FI]*/
  466. }
  467.  
  468.  
  469. T6 r167use_current(T167* C){
  470. T6 R=0;
  471. T0* _s=NULL;
  472. T0* _ms=NULL;
  473. /*[IF*/
  474. if((((T0*)ms14_15220))==((void*)(X50to_string((C)->_feature_name/*8*/)))){
  475. _ms=/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*16*/)))->_first_one/*0*//*)*//*)*/;
  476. if(NULL!=(_ms))switch(((T0*)_ms)->id) {
  477. case 174: 
  478. break;
  479. default:
  480. _ms=NULL;
  481. };_s=(((T174*)_ms))->_to_string/*8*/;
  482. R=r7has(((T7*)_s),'C');
  483. }
  484. else{
  485. R=r167standard_use_current(C);
  486. }
  487. /*FI]*/
  488. return R;
  489. }
  490.  
  491.  
  492. T0* r167to_runnable(T167* C,T0* a1){
  493. T0* R=NULL;
  494. T0* _rf=NULL;
  495. T0* _a=NULL;
  496. T0* _t=NULL;
  497. _t=r167runnable_expression((C)->_target/*4*/,a1);
  498. _a=r167runnable_args((C)->_arguments/*16*/,a1);
  499. _rf=r167run_feature_for(C,_t,a1);
  500. /*[IF*/
  501. if(((C)->_run_feature/*12*/)==((void*)(NULL))){
  502. C->_target=_t;
  503. C->_arguments=_a;
  504. C->_run_feature=_rf;
  505. r167run_feature_match(C,a1);
  506. R=(T0*)C;
  507. }
  508.  else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*16*/)))){
  509. R=(T0*)C;
  510. }
  511. else{
  512. {T167*n=malloc(sizeof(*n));
  513. *n=M167;
  514. r167with(n,_t,(C)->_feature_name/*8*/,_a,_rf,a1);
  515. R=(T0*)n;
  516. }
  517. }
  518. /*FI]*/
  519. return R;
  520. }
  521. /*No:PROC_CALL_1.is_pre_computable*/
  522. /*No:PROC_CALL_1.fz_bad_argument*/
  523.  
  524.  
  525. T6 r167standard_use_current(T167* C){
  526. T6 R=0;
  527. /*[IF*/
  528. {/*AT*/R=r152use_current((T152*)((C)->_arguments/*16*/));
  529. }
  530. /*FI]*/
  531. /*[IF*/
  532. if(R){
  533. }
  534.  else if(X109is_current((C)->_target/*4*/)){
  535. R=X27use_current((C)->_run_feature/*12*/);
  536. }
  537. else{
  538. R=X109use_current((C)->_target/*4*/);
  539. }
  540. /*FI]*/
  541. return R;
  542. }
  543. /*No:PROC_CALL_1.arg1*/
  544. /*No:PROC_CALL_1.set_run_feature*/
  545.  
  546.  
  547. T0* r167run_feature_for(T167* C,T0* a1,T0* a2){
  548. T0* R=NULL;
  549. T0* _rc=NULL;
  550. _rc=X52run_class(X109result_type(a1));
  551. R=r23get_rf(((T23*)_rc),a1,(C)->_feature_name/*8*/,a2);
  552. return R;
  553. }
  554. /*No:PROC_CALL_1.target*/
  555. /*No:PROC_CALL_1.run_feature*/
  556. /*No:PROC_CALL_1.end_mark_comment*/
  557.  
  558.  
  559. void r167make(T167* C,T0* a1,T0* a2,T0* a3){
  560. C->_target=a1;
  561. C->_feature_name=a2;
  562. C->_arguments=a3;
  563. }
  564.  
  565.  
  566. T0* r167runnable_args(T0* a1,T0* a2){
  567. T0* R=NULL;
  568. R=r152to_runnable(((T152*)a1),a2);
  569. /*[IF*/
  570. if((R)==((void*)(NULL))){
  571. r21add_position(r152start_position(((T152*)a1)));
  572. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
  573. r21fatal_error((T21*)(oBC12eh),b1);
  574. }/*]*/
  575. }
  576. /*FI]*/
  577. return R;
  578. }
  579. /*No:PROC_CALL_1.fz_07*/
  580.  
  581.  
  582. T0* r167make_runnable(T167* C,T0* a1,T0* a2,T0* a3){
  583. T0* R=NULL;
  584. /*[IF*/
  585. if(((C)->_run_feature/*12*/)==((void*)(NULL))){
  586. C->_target=a1;
  587. C->_arguments=a2;
  588. C->_run_feature=a3;
  589. R=(T0*)C;
  590. }
  591. else{
  592. {T167*n=malloc(sizeof(*n));
  593. *n=M167;
  594. r167make(n,a1,(C)->_feature_name/*8*/,a2);
  595. R=(T0*)n;
  596. }
  597. /*[IRF3.3set_run_feature*/((((T167*)(((T167*)R))))->_run_feature)=(a3);
  598. /*]*/
  599. }
  600. /*FI]*/
  601. return R;
  602. }
  603. /*No:PROC_CALL_1.us_c_inline_c*/
  604.  
  605.  
  606. void r167compile_to_jvm(T167* C){
  607. /*[IF*/
  608. if((((T0*)ms14_15220))==((void*)(X50to_string((C)->_feature_name/*8*/)))){
  609. r21add_position(r167start_position(C));
  610. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms167_140500);
  611. r21fatal_error((T21*)(oBC12eh),b1);
  612. }/*]*/
  613. }
  614. else{
  615. /*[IRF3.6call_proc_call_c2jvm*/{T167* C1=C;
  616. r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
  617. }/*]*/
  618. }
  619. /*FI]*/
  620. }
  621.  
  622.  
  623. void r167afd_check(T167* C){
  624. T0* _running=NULL;
  625. T0* _rc=NULL;
  626. _rc=X52run_class(X109result_type((C)->_target/*4*/));
  627. _running=(((T23*)_rc))->_running/*12*/;
  628. /*[IF*/
  629. if((_running)==((void*)(NULL))){
  630. r21add_position(X109start_position((C)->_target/*4*/));
  631. /*[IRF3.6append*/{T0* b1=((T0*)ms121_181815);
  632. r7append((T7*)(oBC21explanation),b1);
  633. }/*]*/
  634. /*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)_rc))->_current_type/*0*/);
  635. r7append((T7*)(oBC21explanation),b1);
  636. }/*]*/
  637. /*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
  638. r7append((T7*)(oBC21explanation),b1);
  639. }/*]*/
  640. r21print_as_warning((T21*)(oBC12eh));
  641. r23set_at_run_time(((T23*)_rc));
  642. }
  643.  else if((r340count(((T340*)_running)))>(1)){
  644. r335update((C)->_target/*4*/,(C)->_run_feature/*12*/);
  645. }
  646. /*FI]*/
  647. X109afd_check((C)->_target/*4*/);
  648. /*[IF*/
  649. {/*AT*/r152afd_check((T152*)((C)->_arguments/*16*/));
  650. }
  651. /*FI]*/
  652. }
  653. /*No:PROC_CALL_1.arg_count*/
  654. /*No:PROC_CALL_1.call_proc_call_c2jvm*/
  655.  
  656.  
  657. void r167with(T167* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  658. C->_target=a1;
  659. C->_feature_name=a2;
  660. C->_arguments=a3;
  661. C->_run_feature=a4;
  662. r167run_feature_match(C,a5);
  663. }
  664. /*No:PROC_CALL_1.fatal_error*/
  665. /*No:CALL_INFIX_INT_REM.static_value*/
  666. /*No:CALL_INFIX_INT_REM.feature_name*/
  667.  
  668.  
  669. T6 r137is_static(T137* C){
  670. T6 R=0;
  671. /*[IF*/
  672. if(X52is_integer(r137result_type(C))){
  673. /*[IF*/
  674. if((X109is_static((C)->_target/*4*/))&&(X109is_static(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
  675. R=1;
  676. C->_static_value_mem=(X109static_value((C)->_target/*4*/))%(X109static_value(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
  677. }
  678. /*FI]*/
  679. }
  680. /*FI]*/
  681. return R;
  682. }
  683. /*No:CALL_INFIX_INT_REM.is_manifest_string*/
  684.  
  685.  
  686. T0* r137start_position(T137* C){
  687. T0* R=NULL;
  688. R=((T141*)((C)->_feature_name/*12*/))->_start_position/*8*/;
  689. return R;
  690. }
  691.  
  692.  
  693. T0* r137add_comment(T137* C,T0* a1){
  694. T0* R=NULL;
  695. /*[IF*/
  696. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
  697. R=(T0*)C;
  698. }
  699. else{
  700. {T234*n=malloc(sizeof(*n));
  701. *n=M234;
  702. r234make(n,(T0*)C,a1);
  703. R=(T0*)n;
  704. }
  705. }
  706. /*FI]*/
  707. return R;
  708. }
  709.  
  710.  
  711. T2 r137to_integer(T137* C){
  712. T2 R=0;
  713. r137error(r137start_position(C),((T0*)ms13_45846));
  714. return R;
  715. }
  716.  
  717.  
  718. T6 r137use_current(T137* C){
  719. T6 R=0;
  720. /*[IF*/
  721. {/*AT*/R=r152use_current((T152*)((C)->_arguments/*8*/));
  722. }
  723. /*FI]*/
  724. /*[IF*/
  725. if(R){
  726. }
  727.  else if(X109is_current((C)->_target/*4*/)){
  728. R=X27use_current((C)->_run_feature/*16*/);
  729. }
  730. else{
  731. R=X109use_current((C)->_target/*4*/);
  732. }
  733. /*FI]*/
  734. return R;
  735. }
  736. /*No:CALL_INFIX_INT_REM.jvm_branch_if_true*/
  737.  
  738.  
  739. T0* r137to_runnable(T137* C,T0* a1){
  740. T0* R=NULL;
  741. T0* _rf=NULL;
  742. T0* _tbee=NULL;
  743. T0* _at=NULL;
  744. T0* _tt=NULL;
  745. T0* _a=NULL;
  746. T0* _t=NULL;
  747. _t=r137runnable_expression((C)->_target/*4*/,a1);
  748. _a=r137runnable_args((C)->_arguments/*8*/,a1);
  749. _tt=X109result_type(_t);
  750. _at=X109result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
  751. /*[IF*/
  752. /*AF*//*AE*/
  753. /*FI]*/
  754. _rf=r137run_feature_for(C,_t,a1);
  755. /*[IF*/
  756. if(((C)->_run_feature/*16*/)==((void*)(NULL))){
  757. C->_target=_t;
  758. C->_arguments=_a;
  759. C->_run_feature=_rf;
  760. r137run_feature_match(C,a1);
  761. R=(T0*)C;
  762. }
  763.  else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
  764. R=(T0*)C;
  765. }
  766. else{
  767. {T137*n=malloc(sizeof(*n));
  768. *n=M137;
  769. r137with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
  770. R=(T0*)n;
  771. }
  772. }
  773. /*FI]*/
  774. return R;
  775. }
  776.  
  777.  
  778. T2 r137compile_to_jvm_into(T137* C,T0* a1){
  779. T2 R=0;
  780. R=r137standard_compile_to_jvm_into(C,a1);
  781. return R;
  782. }
  783. /*No:CALL_INFIX_INT_REM.is_pre_computable*/
  784. /*No:CALL_INFIX_INT_REM.fz_bad_argument*/
  785. /*No:CALL_INFIX_INT_REM.fz_iinaiv*/
  786.  
  787.  
  788. T0* r137result_type(T137* C){
  789. T0* R=NULL;
  790. T0* _tla=NULL;
  791. R=X27result_type((C)->_run_feature/*16*/);
  792. /*[IF*/
  793. if(X52is_like_current(R)){
  794. R=/*X27current_type*/((T0*)((T26*)((C)->_run_feature/*16*/))->_current_type/*4*/);
  795. }
  796. else{
  797. _tla=R;
  798. if(NULL!=(_tla))switch(((T0*)_tla)->id) {
  799. case 262: 
  800. break;
  801. default:
  802. _tla=NULL;
  803. };/*[IF*/
  804. if((_tla)!=((void*)(NULL))){
  805. R=X52run_type(X109result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
  806. }
  807. /*FI]*/
  808. }
  809. /*FI]*/
  810. return R;
  811. }
  812. /*No:CALL_INFIX_INT_REM.static_value_mem*/
  813. /*No:CALL_INFIX_INT_REM.run_feature*/
  814.  
  815.  
  816. T0* r137runnable_args(T0* a1,T0* a2){
  817. T0* R=NULL;
  818. R=r152to_runnable(((T152*)a1),a2);
  819. /*[IF*/
  820. if((R)==((void*)(NULL))){
  821. r21add_position(r152start_position(((T152*)a1)));
  822. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
  823. r21fatal_error((T21*)(oBC12eh),b1);
  824. }/*]*/
  825. }
  826. /*FI]*/
  827. return R;
  828. }
  829.  
  830.  
  831. void r137standard_compile_target_to_jvm(T137* C){
  832. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T137* C1=C;
  833. r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
  834. }/*]*/
  835. /*]*/
  836. X52jvm_check_class_invariant(r137result_type(C));
  837. }
  838. /*No:CALL_INFIX_INT_REM.compile_to_jvm_assignment*/
  839. /*No:CALL_INFIX_INT_REM.fz_07*/
  840.  
  841.  
  842. void r137compile_to_jvm_old(T137* C){
  843. X109compile_to_jvm_old((C)->_target/*4*/);
  844. /*[IF*/
  845. {/*AT*/r152compile_to_jvm_old((T152*)((C)->_arguments/*8*/));
  846. }
  847. /*FI]*/
  848. }
  849. /*No:CALL_INFIX_INT_REM.jvm_assign*/
  850. /*No:CALL_INFIX_INT_REM.jvm_branch_if_false*/
  851. /*No:CALL_INFIX_INT_REM.compile_to_jvm*/
  852. /*No:CALL_INFIX_INT_REM.arg_count*/
  853.  
  854.  
  855. void r137with(T137* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  856. C->_target=a1;
  857. C->_feature_name=a2;
  858. C->_arguments=a3;
  859. C->_run_feature=a4;
  860. r137run_feature_match(C,a5);
  861. }
  862. /*No:CALL_INFIX_INT_REM.call_proc_call_c2jvm*/
  863. /*No:CALL_INFIX_INT_REM.is_result*/
  864. /*No:CALL_INFIX_INT_REM.fatal_error*/
  865.  
  866.  
  867. void r137run_feature_match(T137* C,T0* a1){
  868. r137run_feature_has_result(C);
  869. r152match_with((T152*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
  870. }
  871. /*No:CALL_INFIX_INT_REM.arguments*/
  872.  
  873.  
  874. T0* r137runnable_expression(T0* a1,T0* a2){
  875. T0* R=NULL;
  876. R=X109to_runnable(a1,a2);
  877. /*[IF*/
  878. if((R)==((void*)(NULL))){
  879. r21add_position(X109start_position(a1));
  880. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms121_16515);
  881. r21fatal_error((T21*)(oBC12eh),b1);
  882. }/*]*/
  883. }
  884. /*FI]*/
  885. return R;
  886. }
  887. /*No:CALL_INFIX_INT_REM.can_be_dropped*/
  888. /*No:CALL_INFIX_INT_REM.implicit_cast*/
  889. /*No:CALL_INFIX_INT_REM.compile_target_to_jvm*/
  890. /*No:CALL_INFIX_INT_REM.us_backslash_backslash*/
  891. /*No:CALL_INFIX_INT_REM.isa_dca_inline_argument*/
  892. /*No:CALL_INFIX_INT_REM.arg1*/
  893.  
  894.  
  895. void r137run_feature_has_result(T137* C){
  896. /*[IF*/
  897. if((X27result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
  898. r21add_position(X27start_position((C)->_run_feature/*16*/));
  899. r21add_position(((T141*)((C)->_feature_name/*12*/))->_start_position/*8*/);
  900. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms120_53650);
  901. r21fatal_error((T21*)(oBC12eh),b1);
  902. }/*]*/
  903. }
  904. /*FI]*/
  905. }
  906.  
  907.  
  908. T2 r137jvm_standard_branch_if_false(T137* C){
  909. T2 R=0;
  910. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T137* C1=C;
  911. r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
  912. }/*]*/
  913. /*]*/
  914. R=r28opcode_ifeq((T28*)(oBC12code_attribute));
  915. return R;
  916. }
  917.  
  918.  
  919. T0* r137run_feature_for(T137* C,T0* a1,T0* a2){
  920. T0* R=NULL;
  921. T0* _rc=NULL;
  922. _rc=X52run_class(X109result_type(a1));
  923. R=r23get_rf(((T23*)_rc),a1,(C)->_feature_name/*12*/,a2);
  924. return R;
  925. }
  926. /*No:CALL_INFIX_INT_REM.target*/
  927.  
  928.  
  929. void r137error(T0* a1,T0* a2){
  930. r21add_position(a1);
  931. r21error((T21*)(oBC12eh),a2);
  932. }
  933.  
  934.  
  935. void r137make(T137* C,T0* a1,T0* a2,T0* a3){
  936. C->_target=a1;
  937. {T141*n=malloc(sizeof(*n));
  938. *n=M141;
  939. r141make(n,r137operator(),a2);
  940. C->_feature_name=(T0*)n;
  941. }
  942. {T152*n=malloc(sizeof(*n));
  943. *n=M152;
  944. /*[IRF3.3make_1*/((((T152*)(n)))->_first_one)=(a3);
  945. /*]*/
  946. C->_arguments=(T0*)n;
  947. }
  948. }
  949. /*No:CALL_INFIX_INT_REM.is_current*/
  950.  
  951.  
  952. T2 r137standard_compile_to_jvm_into(T137* C,T0* a1){
  953. T2 R=0;
  954. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T137* C1=C;
  955. r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
  956. }/*]*/
  957. /*]*/
  958. R=X52jvm_convert_to(X52run_type(r137result_type(C)),a1);
  959. return R;
  960. }
  961. /*No:CALL_INFIX_INT_REM.is_void*/
  962.  
  963.  
  964. T0* r137operator(void){
  965. T0* R=NULL;
  966. R=((T0*)ms14_374);
  967. return R;
  968. }
  969.  
  970.  
  971. T2 r137jvm_standard_branch_if_true(T137* C){
  972. T2 R=0;
  973. /*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T137* C1=C;
  974. r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
  975. }/*]*/
  976. /*]*/
  977. R=r28opcode_ifne((T28*)(oBC12code_attribute));
  978. return R;
  979. }
  980.  
  981.  
  982. void r137afd_check(T137* C){
  983. T0* _running=NULL;
  984. T0* _rc=NULL;
  985. _rc=X52run_class(X109result_type((C)->_target/*4*/));
  986. _running=(((T23*)_rc))->_running/*12*/;
  987. /*[IF*/
  988. if((_running)==((void*)(NULL))){
  989. r21add_position(X109start_position((C)->_target/*4*/));
  990. /*[IRF3.6append*/{T0* b1=((T0*)ms121_181815);
  991. r7append((T7*)(oBC21explanation),b1);
  992. }/*]*/
  993. /*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)_rc))->_current_type/*0*/);
  994. r7append((T7*)(oBC21explanation),b1);
  995. }/*]*/
  996. /*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
  997. r7append((T7*)(oBC21explanation),b1);
  998. }/*]*/
  999. r21print_as_warning((T21*)(oBC12eh));
  1000. r23set_at_run_time(((T23*)_rc));
  1001. }
  1002.  else if((r340count(((T340*)_running)))>(1)){
  1003. r335update((C)->_target/*4*/,(C)->_run_feature/*16*/);
  1004. }
  1005. /*FI]*/
  1006. X109afd_check((C)->_target/*4*/);
  1007. /*[IF*/
  1008. {/*AT*/r152afd_check((T152*)((C)->_arguments/*8*/));
  1009. }
  1010. /*FI]*/
  1011. }
  1012. /*No:WHEN_LIST.nb_errors*/
  1013.  
  1014.  
  1015. T0* r238to_runnable_integer(T238* C,T0* a1){
  1016. T0* R=NULL;
  1017. T0* _e_when=NULL;
  1018. T2 _i=0;
  1019. /*[IF*/
  1020. if(((C)->_e_inspect/*0*/)==((void*)(NULL))){
  1021. C->_e_inspect=a1;
  1022. _i=1;
  1023. while (!(((_i)>(((T239*)((C)->_list/*4*/))->_upper/*8*/))||((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)>(0)))) {
  1024. _e_when=r237to_runnable_integer((T237*)(r239item((T239*)((C)->_list/*4*/),_i)),(T0*)C);
  1025. /*[IF*/
  1026. if((_e_when)==((void*)(NULL))){
  1027. r238error(r238start_position(C),((T0*)ms238_15022));
  1028. }
  1029. else{
  1030. /*[IRF3.6put*/{T239* C1=(T239*)((C)->_list/*4*/);
  1031. T0* b1=_e_when;
  1032. T2 b2=_i;
  1033. ((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
  1034. }/*]*/
  1035. }
  1036. /*FI]*/
  1037. _i=(_i)+(1);
  1038. }
  1039. R=(T0*)C;
  1040. }
  1041. else{
  1042. {T238*n=malloc(sizeof(*n));
  1043. *n=M238;
  1044. r238from_when_list(n,(T0*)C);
  1045. R=(T0*)n;
  1046. }
  1047. R=r238to_runnable_integer(((T238*)R),a1);
  1048. }
  1049. /*FI]*/
  1050. return R;
  1051. }
  1052.  
  1053.  
  1054. T0* r238start_position(T238* C){
  1055. T0* R=NULL;
  1056. R=((T237*)(r239item((T239*)((C)->_list/*4*/),1)))->_start_position/*0*/;
  1057. return R;
  1058. }
  1059. /*No:WHEN_LIST.add_last*/
  1060. /*No:WHEN_LIST.em1*/
  1061.  
  1062.  
  1063. T6 r238use_current(T238* C){
  1064. T6 R=0;
  1065. T2 _i=0;
  1066. /*[IF*/
  1067. if(((C)->_list/*4*/)!=((void*)(NULL))){
  1068. _i=1;
  1069. while (!(((_i)>(((T239*)((C)->_list/*4*/))->_upper/*8*/))||(R))) {
  1070. R=r237use_current((T237*)(r239item((T239*)((C)->_list/*4*/),_i)));
  1071. _i=(_i)+(1);
  1072. }
  1073. }
  1074. /*FI]*/
  1075. return R;
  1076. }
  1077.  
  1078.  
  1079. T6 r238includes_integer(T238* C,T2 a1){
  1080. T6 R=0;
  1081. T2 _i=0;
  1082. _i=1;
  1083. while (!((R)||((_i)>(((T239*)((C)->_list/*4*/))->_upper/*8*/)))) {
  1084. R=r237includes_integer((T237*)(r239item((T239*)((C)->_list/*4*/),_i)),a1);
  1085. _i=(_i)+(1);
  1086. }
  1087. return R;
  1088. }
  1089.  
  1090.  
  1091. void r238from_when_list(T238* C,T0* a1){
  1092. T0* _e_when=NULL;
  1093. T2 _i=0;
  1094. C->_list=r239twin((T239*)((((T238*)a1))->_list/*4*/));
  1095. _i=1;
  1096. while (!((_i)>(((T239*)((C)->_list/*4*/))->_upper/*8*/))) {
  1097. {T237*n=malloc(sizeof(*n));
  1098. *n=M237;
  1099. r237from_e_when(n,r239item((T239*)((C)->_list/*4*/),_i));
  1100. _e_when=(T0*)n;
  1101. }
  1102. /*[IRF3.6put*/{T239* C1=(T239*)((C)->_list/*4*/);
  1103. T0* b1=_e_when;
  1104. T2 b2=_i;
  1105. ((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
  1106. }/*]*/
  1107. _i=(_i)+(1);
  1108. }
  1109. }
  1110.  
  1111.  
  1112. void r238compile_to_jvm_resolve_branch(T238* C){
  1113. T2 _i=0;
  1114. /*[IF*/
  1115. if(((C)->_list/*4*/)!=((void*)(NULL))){
  1116. _i=((T239*)((C)->_list/*4*/))->_upper/*8*/;
  1117. while (!((_i)==(0))) {
  1118. /*[IRF3.6compile_to_jvm_resolve_branch*/{T237* C1=(T237*)(r239item((T239*)((C)->_list/*4*/),_i));
  1119. r28resolve_u2_branch((C1)->_point2/*24*/);
  1120. }/*]*/
  1121. _i=(_i)-(1);
  1122. }
  1123. }
  1124. /*FI]*/
  1125. }
  1126. /*No:WHEN_LIST.e_inspect*/
  1127.  
  1128.  
  1129. void r238error(T0* a1,T0* a2){
  1130. r21add_position(a1);
  1131. r21error((T21*)(oBC12eh),a2);
  1132. }
  1133. /*No:WHEN_LIST.make*/
  1134.  
  1135.  
  1136. void r238compile_to_jvm(T238* C,T0* a1){
  1137. T2 _i=0;
  1138. T2 _r=0;
  1139. /*[IF*/
  1140. if(((C)->_list/*4*/)!=((void*)(NULL))){
  1141. _r=((T239*)((C)->_list/*4*/))->_upper/*8*/;
  1142. _i=1;
  1143. while (!((_r)==(0))) {
  1144. _r=(_r)-(1);
  1145. r237compile_to_jvm((T237*)(r239item((T239*)((C)->_list/*4*/),_i)),a1,_r);
  1146. _i=(_i)+(1);
  1147. }
  1148. }
  1149. /*FI]*/
  1150. }
  1151.  
  1152.  
  1153. void r238afd_check(T238* C){
  1154. T2 _i=0;
  1155. _i=((T239*)((C)->_list/*4*/))->_upper/*8*/;
  1156. while (!((_i)==(0))) {
  1157. r237afd_check((T237*)(r239item((T239*)((C)->_list/*4*/),_i)));
  1158. _i=(_i)-(1);
  1159. }
  1160. }
  1161. /*No:WHEN_LIST.list*/
  1162.  
  1163.  
  1164. T0* r238to_runnable_character(T238* C,T0* a1){
  1165. T0* R=NULL;
  1166. T0* _e_when=NULL;
  1167. T2 _i=0;
  1168. /*[IF*/
  1169. if(((C)->_e_inspect/*0*/)==((void*)(NULL))){
  1170. C->_e_inspect=a1;
  1171. _i=1;
  1172. while (!(((_i)>(((T239*)((C)->_list/*4*/))->_upper/*8*/))||((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)>(0)))) {
  1173. _e_when=r237to_runnable_character((T237*)(r239item((T239*)((C)->_list/*4*/),_i)),(T0*)C);
  1174. /*[IF*/
  1175. if((_e_when)==((void*)(NULL))){
  1176. r238error(r238start_position(C),((T0*)ms238_15022));
  1177. }
  1178. else{
  1179. /*[IRF3.6put*/{T239* C1=(T239*)((C)->_list/*4*/);
  1180. T0* b1=_e_when;
  1181. T2 b2=_i;
  1182. ((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
  1183. }/*]*/
  1184. }
  1185. /*FI]*/
  1186. _i=(_i)+(1);
  1187. }
  1188. R=(T0*)C;
  1189. }
  1190. else{
  1191. {T238*n=malloc(sizeof(*n));
  1192. *n=M238;
  1193. r238from_when_list(n,(T0*)C);
  1194. R=(T0*)n;
  1195. }
  1196. R=r238to_runnable_character(((T238*)R),a1);
  1197. }
  1198. /*FI]*/
  1199. return R;
  1200. }
  1201.  
  1202.  
  1203. T0* r290run_require(T0* a1){
  1204. T0* R=NULL;
  1205. T0* _ct=NULL;
  1206. T0* _ar=NULL;
  1207. T0* _hc=NULL;
  1208. T0* _er=NULL;
  1209. T0* _r=NULL;
  1210. T2 _i=0;
  1211. r365clear((T365*)(oBC95require_collector));
  1212. _ct=/*X27current_type*/((T0*)(((T26*)a1))->_current_type/*4*/);
  1213. r63collect_for((T63*)(X52base_class(_ct)),1,/*X27name*/((T0*)(((T26*)a1))->_name/*16*/));
  1214. /*[IF*/
  1215. if(!(r365empty((T365*)(oBC95require_collector)))){
  1216. _i=1;
  1217. while (!((_i)>(((T365*)(oBC95require_collector))->_upper/*8*/))) {
  1218. _er=r365item((T365*)(oBC95require_collector),_i);
  1219. _hc=(((T291*)_er))->_header_comment/*4*/;
  1220. /*[IF*/
  1221. if(!(/*(IRF4.7empty*/((((T291*)_er))->_list/*8*/)==(NULL)/*)*/)){
  1222. _r=r290runnable((((T291*)_er))->_list/*8*/,_ct,a1);
  1223. /*[IF*/
  1224. if((_r)!=((void*)(NULL))){
  1225. {T291*n=malloc(sizeof(*n));
  1226. *n=M291;
  1227. r291make_runnable(n,_r,_ct,a1);
  1228. _er=(T0*)n;
  1229. }
  1230. /*[IRF3.3set_header_comment*/((((T291*)(((T291*)_er))))->_header_comment)=(_hc);
  1231. /*]*/
  1232. /*[IF*/
  1233. if((_ar)==((void*)(NULL))){
  1234. _ar=se_ma365(1,
  1235. _er);
  1236. }
  1237. else{
  1238. r365add_last(((T365*)_ar),_er);
  1239. }
  1240. /*FI]*/
  1241. }
  1242. /*FI]*/
  1243. }
  1244. /*FI]*/
  1245. _i=(_i)+(1);
  1246. }
  1247. /*[IF*/
  1248. if((_ar)!=((void*)(NULL))){
  1249. {T367*n=malloc(sizeof(*n));
  1250. *n=M367;
  1251. /*[IRF3.3make*/((((T367*)(n)))->_list)=(_ar);
  1252. /*]*/
  1253. R=(T0*)n;
  1254. }
  1255. }
  1256. /*FI]*/
  1257. }
  1258. /*FI]*/
  1259. return R;
  1260. }
  1261. /*No:DEFERRED_PROCEDURE.base_class*/
  1262.  
  1263.  
  1264. void r290set_rescue_compound(T290* C,T0* a1){
  1265. /*[IF*/
  1266. if((a1)!=((void*)(NULL))){
  1267. r21add_position(r220start_position(((T220*)a1)));
  1268. }
  1269. else{
  1270. r21add_position(r290start_position(C));
  1271. }
  1272. /*FI]*/
  1273. /*[IRF3.6append*/{T0* b1=((T0*)ms289_125161);
  1274. r7append((T7*)(oBC21explanation),b1);
  1275. }/*]*/
  1276. r21print_as_fatal_error((T21*)(oBC12eh));
  1277. }
  1278.  
  1279.  
  1280. T0* r290start_position(T290* C){
  1281. T0* R=NULL;
  1282. R=X50start_position(/*(IRF4.6first_name*/r87item(((T87*)((C)->_names/*8*/)),1)/*)*/);
  1283. return R;
  1284. }
  1285.  
  1286.  
  1287. T6 r290is_merge_with(T290* C,T0* a1,T0* a2){
  1288. T6 R=0;
  1289. R=1;
  1290. /*[IF*/
  1291. if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X95result_type(a1)))){
  1292. /*[IF*/
  1293. {/*AT*/R=0;
  1294. }
  1295. /*FI]*/
  1296. }
  1297. /*FI]*/
  1298. /*[IF*/
  1299. if(((C)->_arguments/*20*/)!=((void*)(X95arguments(a1)))){
  1300. /*[IF*/
  1301. if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X95arguments(a1))==((void*)(NULL)))){
  1302. R=0;
  1303. }
  1304.  else if((/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T195*)(((T191*)(X95arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
  1305. R=0;
  1306. }
  1307. /*FI]*/
  1308. }
  1309. /*FI]*/
  1310. /*[IF*/
  1311. if(R){
  1312. /*[IF*/
  1313. /*AF*//*AE*/
  1314. /*FI]*/
  1315. /*[IF*/
  1316. if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
  1317. R=r191is_a_in((T191*)((C)->_arguments/*20*/),X95arguments(a1),a2);
  1318. }
  1319. /*FI]*/
  1320. /*[IF*/
  1321. if(!(R)){
  1322. R=1;
  1323. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
  1324. /*]*/
  1325. /*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
  1326. /*]*/
  1327. /*]*/
  1328. /*[IF*/
  1329. /*AF*//*AE*/
  1330. /*FI]*/
  1331. /*[IF*/
  1332. if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
  1333. R=r191is_a_in((T191*)(X95arguments(a1)),(C)->_arguments/*20*/,a2);
  1334. }
  1335. /*FI]*/
  1336. }
  1337. /*FI]*/
  1338. }
  1339. /*FI]*/
  1340. /*[IF*/
  1341. if(R){
  1342. r290merge_header_comments(C,a1);
  1343. }
  1344. /*FI]*/
  1345. return R;
  1346. }
  1347.  
  1348.  
  1349. T0* r290runnable(T0* a1,T0* a2,T0* a3){
  1350. T0* R=NULL;
  1351. T0* _a=NULL;
  1352. T2 _i=0;
  1353. /*[IF*/
  1354. if(!(r108empty(((T108*)a1)))){
  1355. R=r108twin(((T108*)a1));
  1356. _i=(((T108*)R))->_upper/*8*/;
  1357. while (!((_i)==(0))) {
  1358. r22push((T22*)(oBC12small_eiffel),a3);
  1359. _a=r105to_runnable((T105*)(r108item(((T108*)R),_i)),a2);
  1360. /*[IF*/
  1361. if((_a)==((void*)(NULL))){
  1362. r290error(r105start_position((T105*)(r108item(((T108*)R),_i))),((T0*)ms13_14266));
  1363. }
  1364. else{
  1365. /*[IRF3.6put*/{T108* C1=((T108*)R);
  1366. T0* b1=_a;
  1367. T2 b2=_i;
  1368. ((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
  1369. }/*]*/
  1370. }
  1371. /*FI]*/
  1372. r22pop((T22*)(oBC12small_eiffel));
  1373. _i=(_i)-(1);
  1374. }
  1375. }
  1376. /*FI]*/
  1377. return R;
  1378. }
  1379. /*No:DEFERRED_PROCEDURE.first_name*/
  1380. /*No:DEFERRED_PROCEDURE.em1*/
  1381. /*No:DEFERRED_PROCEDURE.header_comment*/
  1382. /*No:DEFERRED_PROCEDURE.names*/
  1383. /*No:DEFERRED_PROCEDURE.fz_03*/
  1384. /*No:DEFERRED_PROCEDURE.result_type*/
  1385. /*No:DEFERRED_PROCEDURE.code_require*/
  1386. /*No:DEFERRED_PROCEDURE.make_e_feature*/
  1387.  
  1388.  
  1389. void r290add_into(T290* C,T0* a1){
  1390. T0* _fn=NULL;
  1391. T2 _i=0;
  1392. C->_base_class=r59base_class((T59*)(X50start_position(r87item((T87*)((C)->_names/*8*/),1))));
  1393. _i=1;
  1394. while (!((_i)>(r87count((T87*)((C)->_names/*8*/))))) {
  1395. _fn=r87item((T87*)((C)->_names/*8*/),_i);
  1396. /*[IF*/
  1397. if(r94has(((T94*)a1),X50to_key(_fn))){
  1398. _fn=/*X95first_name*/((T0*)/*(IRF4.6first_name*/r87item(((T87*)(((T203*)(r94at(((T94*)a1),X50to_key(_fn))))->_names/*8*/)),1)/*)*/);
  1399. r21add_position(X50start_position(_fn));
  1400. r21add_position(X50start_position(r87item((T87*)((C)->_names/*8*/),_i)));
  1401. r21error((T21*)(oBC12eh),((T0*)ms95_41905));
  1402. /*[IRF3.6append*/{T0* b1=X50to_string(_fn);
  1403. r7append((T7*)(oBC21explanation),b1);
  1404. }/*]*/
  1405. r21error((T21*)(oBC12eh),((T0*)ms13_47));
  1406. }
  1407. else{
  1408. r94put(((T94*)a1),(T0*)C,X50to_key(_fn));
  1409. }
  1410. /*FI]*/
  1411. _i=(_i)+(1);
  1412. }
  1413. }
  1414.  
  1415.  
  1416. T6 r290can_hide(T290* C,T0* a1,T0* a2){
  1417. T6 R=0;
  1418. /*[IF*/
  1419. if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X95result_type(a1)))){
  1420. /*[IF*/
  1421. {/*AT*/r21add_position(X95start_position(a1));
  1422. r290error(r290start_position(C),((T0*)ms95_64647));
  1423. }
  1424. /*FI]*/
  1425. }
  1426. /*FI]*/
  1427. /*[IF*/
  1428. if(((C)->_arguments/*20*/)!=((void*)(X95arguments(a1)))){
  1429. /*[IF*/
  1430. if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X95arguments(a1))==((void*)(NULL)))){
  1431. r21add_position(X95start_position(a1));
  1432. r290error(r290start_position(C),((T0*)ms95_83182));
  1433. }
  1434.  else if((/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T195*)(((T191*)(X95arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
  1435. r21add_position(X95start_position(a1));
  1436. r290error(r290start_position(C),((T0*)ms95_67155));
  1437. }
  1438. /*FI]*/
  1439. }
  1440. /*FI]*/
  1441. /*[IF*/
  1442. if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
  1443. /*[IF*/
  1444. /*AF*//*AE*/
  1445. /*FI]*/
  1446. }
  1447. /*FI]*/
  1448. /*[IF*/
  1449. if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
  1450. /*[IF*/
  1451. if(((C)->_arguments/*20*/)!=((void*)(NULL))){
  1452. /*[IF*/
  1453. if(!(r191is_a_in((T191*)((C)->_arguments/*20*/),X95arguments(a1),a2))){
  1454. r21add_position(X95start_position(a1));
  1455. r21add_position(r290start_position(C));
  1456. /*[IRF3.6append*/{T0* b1=((T0*)ms95_54285);
  1457. r7append((T7*)(oBC21explanation),b1);
  1458. }/*]*/
  1459. /*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)a2))->_current_type/*0*/);
  1460. r7append((T7*)(oBC21explanation),b1);
  1461. }/*]*/
  1462. r21error((T21*)(oBC12eh),((T0*)ms13_47));
  1463. }
  1464. /*FI]*/
  1465. }
  1466. /*FI]*/
  1467. }
  1468. /*FI]*/
  1469. R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
  1470. /*[IF*/
  1471. if(R){
  1472. r290merge_header_comments(C,a1);
  1473. }
  1474. /*FI]*/
  1475. return R;
  1476. }
  1477. /*No:DEFERRED_PROCEDURE.ensure_assertion*/
  1478.  
  1479.  
  1480. T0* r290run_ensure(T0* a1){
  1481. T0* R=NULL;
  1482. T0* _ct=NULL;
  1483. T0* _r=NULL;
  1484. r108clear((T108*)(oBC95assertion_collector));
  1485. /*[IRF3.3clear*/{T0* _default_item=NULL;
  1486. ((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(_default_item);
  1487. }/*]*/
  1488. _ct=/*X27current_type*/((T0*)(((T26*)a1))->_current_type/*4*/);
  1489. r63collect_for((T63*)(X52base_class(_ct)),2,/*X27name*/((T0*)(((T26*)a1))->_name/*16*/));
  1490. _r=r290runnable(oBC95assertion_collector,_ct,a1);
  1491. /*[IF*/
  1492. if((_r)!=((void*)(NULL))){
  1493. {T219*n=malloc(sizeof(*n));
  1494. *n=M219;
  1495. r219make_runnable(n,_r,_ct,a1);
  1496. R=(T0*)n;
  1497. }
  1498. /*[IRF3.3set_header_comment*/((((T219*)(((T219*)R))))->_header_comment)=(((T364*)(oBC95header_comment_memory))->_item/*0*/);
  1499. /*]*/
  1500. /*[IRF3.3clear*/{T0* _default_item=NULL;
  1501. ((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(_default_item);
  1502. }/*]*/
  1503. }
  1504. /*FI]*/
  1505. return R;
  1506. }
  1507.  
  1508.  
  1509. void r290check_obsolete(T290* C){
  1510. /*[IF*/
  1511. if(!(((T22*)(oBC12small_eiffel))->_short_flag/*8*/)){
  1512. /*[IF*/
  1513. if(((C)->_obsolete_mark/*24*/)!=((void*)(NULL))){
  1514. /*[IRF3.6append*/{T0* b1=((T0*)ms218_39396);
  1515. r7append((T7*)(oBC21explanation),b1);
  1516. }/*]*/
  1517. /*[IRF3.6append*/{T0* b1=((T174*)((C)->_obsolete_mark/*24*/))->_to_string/*8*/;
  1518. r7append((T7*)(oBC21explanation),b1);
  1519. }/*]*/
  1520. r290warning(r290start_position(C),((T0*)ms13_166));
  1521. }
  1522. /*FI]*/
  1523. }
  1524. /*FI]*/
  1525. }
  1526.  
  1527.  
  1528. T0* r290try_to_undefine(T290* C,T0* a1,T0* a2){
  1529. T0* R=NULL;
  1530. T0* _fn2=NULL;
  1531. r21add_position(X50start_position(a1));
  1532. _fn2=r87feature_name((T87*)((C)->_names/*8*/),X50to_key(a1));
  1533. /*[IF*/
  1534. if((_fn2)!=((void*)(NULL))){
  1535. X50undefine_in(_fn2,a2);
  1536. }
  1537. /*FI]*/
  1538. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
  1539. /*]*/
  1540. /*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
  1541. /*]*/
  1542. /*]*/
  1543. R=/*(IRF4.4try_to_undefine_aux*/((T0*)(C))/*)*/;
  1544. /*[IF*/
  1545. if((R)!=((void*)(NULL))){
  1546. /*X289set_clients*//*[IRF3.3set_clients*/((((T292*)(((T292*)R))))->_clients)=((C)->_clients/*16*/);
  1547. /*]*/
  1548. r290merge_header_comments(C,R);
  1549. }
  1550. else{
  1551. r63fatal_undefine(((T63*)a2),a1);
  1552. }
  1553. /*FI]*/
  1554. return R;
  1555. }
  1556. /*No:DEFERRED_PROCEDURE.is_deferred*/
  1557. /*No:DEFERRED_PROCEDURE.set_clients*/
  1558. /*No:DEFERRED_PROCEDURE.code_ensure*/
  1559. /*No:DEFERRED_PROCEDURE.nb_errors*/
  1560.  
  1561.  
  1562. void r290make_routine(T290* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  1563. /*[IRF3.3make_e_feature*/((((T290*)(C)))->_names)=(a1);
  1564. /*]*/
  1565. C->_header_comment=a4;
  1566. C->_arguments=a2;
  1567. C->_obsolete_mark=a3;
  1568. C->_require_assertion=a5;
  1569. }
  1570.  
  1571.  
  1572. T0* r290to_run_feature(T290* C,T0* a1,T0* a2){
  1573. T0* R=NULL;
  1574. r290check_obsolete(C);
  1575. {T357*n=malloc(sizeof(*n));
  1576. *n=M357;
  1577. r357make(n,a1,a2,(T0*)C);
  1578. R=(T0*)n;
  1579. }
  1580. return R;
  1581. }
  1582.  
  1583.  
  1584. void r290merge_header_comments(T290* C,T0* a1){
  1585. /*[IF*/
  1586. if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
  1587. /*[IF*/
  1588. if(((C)->_header_comment/*12*/)==((void*)(NULL))){
  1589. C->_header_comment=/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/);
  1590. }
  1591.  else if((/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/))==((void*)(NULL))){
  1592. X95set_header_comment(a1,(C)->_header_comment/*12*/);
  1593. }
  1594. /*FI]*/
  1595. }
  1596. /*FI]*/
  1597. }
  1598. /*No:DEFERRED_PROCEDURE.arguments*/
  1599. /*No:DEFERRED_PROCEDURE.require_assertion*/
  1600.  
  1601.  
  1602. void r290warning(T0* a1,T0* a2){
  1603. r21add_position(a1);
  1604. r21warning((T21*)(oBC12eh),a2);
  1605. }
  1606. /*No:DEFERRED_PROCEDURE.try_to_undefine_aux*/
  1607. /*No:DEFERRED_PROCEDURE.set_ensure_assertion*/
  1608. /*No:DEFERRED_PROCEDURE.fz_bad_assertion*/
  1609. /*No:DEFERRED_PROCEDURE.fz_dot*/
  1610.  
  1611.  
  1612. void r290error(T0* a1,T0* a2){
  1613. r21add_position(a1);
  1614. r21error((T21*)(oBC12eh),a2);
  1615. }
  1616. /*No:DEFERRED_PROCEDURE.make*/
  1617. /*No:DEFERRED_PROCEDURE.end_comment*/
  1618.  
  1619.  
  1620. void r290collect_for(T290* C,T2 a1){
  1621. T0* _er=NULL;
  1622. /*[IF*/
  1623. if((a1)==(1)){
  1624. _er=(C)->_require_assertion/*28*/;
  1625. /*[IF*/
  1626. if((_er)!=((void*)(NULL))){
  1627. /*[IF*/
  1628. if(!(r365fast_has((T365*)(oBC95require_collector),_er))){
  1629. r365add_last((T365*)(oBC95require_collector),_er);
  1630. }
  1631. /*FI]*/
  1632. }
  1633. /*FI]*/
  1634. }
  1635. else{
  1636. /*[IF*/
  1637. if(((C)->_ensure_assertion/*32*/)!=((void*)(NULL))){
  1638. /*[IRF3.3set_item*/((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(((T219*)((C)->_ensure_assertion/*32*/))->_header_comment/*4*/);
  1639. /*]*/
  1640. r219add_into((T219*)((C)->_ensure_assertion/*32*/),oBC95assertion_collector);
  1641. }
  1642. /*FI]*/
  1643. }
  1644. /*FI]*/
  1645. }
  1646.  
  1647.  
  1648. void r290from_effective(T290* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
  1649. {T87*n=malloc(sizeof(*n));
  1650. *n=M87;
  1651. /*[IRF3.3make_1*/((((T87*)(n)))->_first)=(a1);
  1652. /*]*/
  1653. C->_names=(T0*)n;
  1654. }
  1655. r290make_routine(C,(C)->_names/*8*/,a2,NULL,NULL,a3);
  1656. /*[IRF3.3set_ensure_assertion*/((((T290*)(C)))->_ensure_assertion)=(a4);
  1657. /*]*/
  1658. C->_base_class=a5;
  1659. }
  1660.  
  1661.  
  1662. void r290set_header_comment(T290* C,T0* a1){
  1663. /*[IF*/
  1664. if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)>(1))){
  1665. C->_end_comment=a1;
  1666. }
  1667. /*FI]*/
  1668. }
  1669. /*No:DEFERRED_PROCEDURE.clients*/
  1670. /*No:DEFERRED_PROCEDURE.obsolete_mark*/
  1671. /*No:CHECK_INVARIANT.nb_errors*/
  1672. /*No:CHECK_INVARIANT.start_position*/
  1673.  
  1674.  
  1675. T0* r223twin(T223* C){
  1676. T0* R=NULL;
  1677. R=malloc(sizeof(*C));
  1678. *((T223*)R)=*C;
  1679. return R;
  1680. }
  1681.  
  1682.  
  1683. T0* r223runnable(T0* a1,T0* a2,T0* a3){
  1684. T0* R=NULL;
  1685. T0* _a=NULL;
  1686. T2 _i=0;
  1687. /*[IF*/
  1688. if(!(r108empty(((T108*)a1)))){
  1689. R=r108twin(((T108*)a1));
  1690. _i=(((T108*)R))->_upper/*8*/;
  1691. while (!((_i)==(0))) {
  1692. r22push((T22*)(oBC12small_eiffel),a3);
  1693. _a=r105to_runnable((T105*)(r108item(((T108*)R),_i)),a2);
  1694. /*[IF*/
  1695. if((_a)==((void*)(NULL))){
  1696. r223error(r105start_position((T105*)(r108item(((T108*)R),_i))),((T0*)ms13_14266));
  1697. }
  1698. else{
  1699. /*[IRF3.6put*/{T108* C1=((T108*)R);
  1700. T0* b1=_a;
  1701. T2 b2=_i;
  1702. ((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
  1703. }/*]*/
  1704. }
  1705. /*FI]*/
  1706. r22pop((T22*)(oBC12small_eiffel));
  1707. _i=(_i)-(1);
  1708. }
  1709. }
  1710. /*FI]*/
  1711. return R;
  1712. }
  1713.  
  1714.  
  1715. T6 r223use_current(T223* C){
  1716. T6 R=0;
  1717. T2 _i=0;
  1718. /*[IF*/
  1719. if(((C)->_list/*8*/)!=((void*)(NULL))){
  1720. _i=((T108*)((C)->_list/*8*/))->_upper/*8*/;
  1721. while (!((R)||((_i)==(0)))) {
  1722. R=r105use_current((T105*)(r108item((T108*)((C)->_list/*8*/),_i)));
  1723. _i=(_i)-(1);
  1724. }
  1725. }
  1726. /*FI]*/
  1727. return R;
  1728. }
  1729. /*No:CHECK_INVARIANT.header_comment*/
  1730.  
  1731.  
  1732. T0* r223to_runnable(T223* C,T0* a1){
  1733. T0* R=NULL;
  1734. /*[IF*/
  1735. if(((C)->_current_type/*12*/)==((void*)(NULL))){
  1736. C->_current_type=a1;
  1737. C->_run_feature=r22top_rf((T22*)(oBC12small_eiffel));
  1738. /*[IF*/
  1739. if(((C)->_list/*8*/)!=((void*)(NULL))){
  1740. C->_list=r223runnable((C)->_list/*8*/,a1,(C)->_run_feature/*16*/);
  1741. }
  1742. /*FI]*/
  1743. /*[IF*/
  1744. if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
  1745. R=(T0*)C;
  1746. }
  1747. /*FI]*/
  1748. }
  1749. else{
  1750. R=r223twin(C);
  1751. /*[IRF3.3set_current_type*/((((T223*)(((T223*)R))))->_current_type)=(NULL);
  1752. /*]*/
  1753. R=r223to_runnable(((T223*)R),a1);
  1754. }
  1755. /*FI]*/
  1756. return R;
  1757. }
  1758. /*No:CHECK_INVARIANT.set_current_type*/
  1759. /*No:CHECK_INVARIANT.fz_bad_assertion*/
  1760. /*No:CHECK_INVARIANT.current_type*/
  1761.  
  1762.  
  1763. T6 r223is_pre_computable(T223* C){
  1764. T6 R=0;
  1765. T2 _i=0;
  1766. /*[IF*/
  1767. if(((C)->_list/*8*/)==((void*)(NULL))){
  1768. R=1;
  1769. }
  1770. else{
  1771. _i=((T108*)((C)->_list/*8*/))->_upper/*8*/;
  1772. R=1;
  1773. while (!((!(R))||((_i)==(0)))) {
  1774. R=r105is_pre_computable((T105*)(r108item((T108*)((C)->_list/*8*/),_i)));
  1775. _i=(_i)-(1);
  1776. }
  1777. }
  1778. /*FI]*/
  1779. return R;
  1780. }
  1781.  
  1782.  
  1783. void r223error(T0* a1,T0* a2){
  1784. r21add_position(a1);
  1785. r21error((T21*)(oBC12eh),a2);
  1786. }
  1787. /*No:CHECK_INVARIANT.run_feature*/
  1788.  
  1789.  
  1790. void r223make(T223* C,T0* a1,T0* a2,T0* a3){
  1791. C->_start_position=a1;
  1792. C->_header_comment=a2;
  1793. C->_list=a3;
  1794. }
  1795.  
  1796.  
  1797. void r223compile_to_jvm(T223* C,T6 a1){
  1798. T0* _ca=NULL;
  1799. T2 _i=0;
  1800. T2 _point_true=0;
  1801. _ca=oBC12code_attribute;
  1802. r28check_opening(((T28*)_ca));
  1803. /*[IRF3.3clear*/((((T48*)((T48*)(oBC107failure))))->_upper)=(-(1));
  1804. /*]*/
  1805. _i=1;
  1806. while (!((_i)>(((T108*)((C)->_list/*8*/))->_upper/*8*/))) {
  1807. r105compile_to_jvm((T105*)(r108item((T108*)((C)->_list/*8*/),_i)),a1);
  1808. r48add_last((T48*)(oBC107failure),r28opcode_ifeq(((T28*)_ca)));
  1809. _i=(_i)+(1);
  1810. }
  1811. /*[IRF3.4opcode_iconst_1*/r28opcode(((T28*)_ca),4,1);
  1812. /*]*/
  1813. _point_true=r28opcode_goto(((T28*)_ca));
  1814. r28resolve_with(oBC107failure);
  1815. /*[IRF3.4opcode_iconst_0*/r28opcode(((T28*)_ca),3,1);
  1816. /*]*/
  1817. r28resolve_u2_branch(_point_true);
  1818. r28check_closing(((T28*)_ca));
  1819. }
  1820.  
  1821.  
  1822. void r223afd_check(T223* C){
  1823. T2 _i=0;
  1824. /*[IF*/
  1825. if(((C)->_list/*8*/)!=((void*)(NULL))){
  1826. _i=((T108*)((C)->_list/*8*/))->_upper/*8*/;
  1827. while (!((_i)==(0))) {
  1828. r105afd_check((T105*)(r108item((T108*)((C)->_list/*8*/),_i)));
  1829. _i=(_i)-(1);
  1830. }
  1831. }
  1832. /*FI]*/
  1833. }
  1834. /*No:CHECK_INVARIANT.list*/
  1835.  
  1836.  
  1837. void r47store_in(T0* a1){
  1838. T2 _i=0;
  1839. T2 _c=0;
  1840. _c=/*(IRF4.9count*//*(IRF4.6count*/(((T48*)(oBC47from_pc))->_upper/*8*/)+(1)/*)*//*)*/;
  1841. r47append_u2(a1,_c);
  1842. _i=0;
  1843. while (!((_i)>=(_c))) {
  1844. r47append_u2(a1,/*(IRF4.6item*/(((T48*)(oBC47from_pc))->_storage/*0*/)[_i]/*)*/);
  1845. r47append_u2(a1,/*(IRF4.6item*/(((T48*)(oBC47to_pc))->_storage/*0*/)[_i]/*)*/);
  1846. r47append_u2(a1,/*(IRF4.6item*/(((T48*)(oBC47handler_pc))->_storage/*0*/)[_i]/*)*/);
  1847. r47append_u2(a1,/*(IRF4.6item*/(((T48*)(oBC47type_idx))->_storage/*0*/)[_i]/*)*/);
  1848. _i=(_i)+(1);
  1849. }
  1850. }
  1851. T0*oBC47from_pc=NULL;
  1852.  
  1853.  
  1854. void r47append_u2(T0* a1,T2 a2){
  1855. /*[IRF3.6append_u1*/{T0* b1=a1;
  1856. T2 b2=(a2)/(256);
  1857. r7extend(((T7*)b1),((T3)(b2)));
  1858. }/*]*/
  1859. /*[IRF3.6append_u1*/{T0* b1=a1;
  1860. T2 b2=(a2)%(256);
  1861. r7extend(((T7*)b1),((T3)(b2)));
  1862. }/*]*/
  1863. }
  1864. T0*oBC47to_pc=NULL;
  1865. /*No:EXCEPTION_TABLE.count*/
  1866. /*No:EXCEPTION_TABLE.append_u1*/
  1867. T0*oBC47type_idx=NULL;
  1868. /*No:EXCEPTION_TABLE.make*/
  1869. T0*oBC47handler_pc=NULL;
  1870. /*No:EXCEPTION_TABLE.clear*/
  1871. /*No:COMPOUND.empty_or_null_body*/
  1872. /*No:COMPOUND.nb_errors*/
  1873.  
  1874.  
  1875. T0* r220start_position(T220* C){
  1876. T0* R=NULL;
  1877. /*[IF*/
  1878. if((r220count(C))>(0)){
  1879. R=X164start_position((C)->_first_one/*8*/);
  1880. }
  1881. /*FI]*/
  1882. return R;
  1883. }
  1884.  
  1885.  
  1886. T6 r220use_current(T220* C){
  1887. T6 R=0;
  1888. T2 _i=0;
  1889. _i=r220count(C);
  1890. while (!((R)||((_i)==(0)))) {
  1891. R=X164use_current(r220item(C,_i));
  1892. _i=(_i)-(1);
  1893. }
  1894. return R;
  1895. }
  1896.  
  1897.  
  1898. T0* r220item(T220* C,T2 a1){
  1899. T0* R=NULL;
  1900. /*[IF*/
  1901. if((a1)==(1)){
  1902. R=(C)->_first_one/*8*/;
  1903. }
  1904. else{
  1905. R=/*(IRF4.6item*/(((T221*)((C)->_remainder/*12*/))->_storage/*0*/)[(a1)-(2)]/*)*/;
  1906. }
  1907. /*FI]*/
  1908. return R;
  1909. }
  1910. /*No:COMPOUND.header_comment*/
  1911. /*No:COMPOUND.first_one*/
  1912.  
  1913.  
  1914. T0* r220to_runnable(T220* C,T0* a1){
  1915. T0* R=NULL;
  1916. T0* _i2=NULL;
  1917. T0* _i1=NULL;
  1918. T2 _i=0;
  1919. /*[IF*/
  1920. if(((C)->_first_one/*8*/)==((void*)(NULL))){
  1921. R=(T0*)C;
  1922. }
  1923.  else if(((C)->_current_type/*4*/)==((void*)(NULL))){
  1924. C->_current_type=a1;
  1925. _i=r220count(C);
  1926. while (!((_i)==(0))) {
  1927. _i1=r220item(C,_i);
  1928. _i2=X164to_runnable(_i1,a1);
  1929. /*[IF*/
  1930. if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)>(0)){
  1931. /*[IRF3.6append*/{T0* b1=((T0*)ms220_59163);
  1932. r7append((T7*)(oBC21explanation),b1);
  1933. }/*]*/
  1934. /*[IRF3.6append*/{T0* b1=X52written_mark((C)->_current_type/*4*/);
  1935. r7append((T7*)(oBC21explanation),b1);
  1936. }/*]*/
  1937. r21add_position(X164start_position(_i1));
  1938. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms220_180);
  1939. r21fatal_error((T21*)(oBC12eh),b1);
  1940. }/*]*/
  1941. }
  1942. else{
  1943. r220put(C,_i2,_i);
  1944. }
  1945. /*FI]*/
  1946. _i=(_i)-(1);
  1947. }
  1948. R=(T0*)C;
  1949. }
  1950. else{
  1951. {T220*n=malloc(sizeof(*n));
  1952. *n=M220;
  1953. r220from_compound(n,(T0*)C);
  1954. R=(T0*)n;
  1955. }
  1956. R=r220to_runnable(((T220*)R),a1);
  1957. }
  1958. /*FI]*/
  1959. return R;
  1960. }
  1961. /*No:COMPOUND.current_type*/
  1962.  
  1963.  
  1964. T6 r220is_pre_computable(T220* C){
  1965. T6 R=0;
  1966. T2 _i=0;
  1967. _i=r220count(C);
  1968. R=1;
  1969. while (!((!(R))||((_i)==(0)))) {
  1970. R=X164is_pre_computable(r220item(C,_i));
  1971. _i=(_i)-(1);
  1972. }
  1973. return R;
  1974. }
  1975. /*No:COMPOUND.first*/
  1976.  
  1977.  
  1978. T2 r220count(T220* C){
  1979. T2 R=0;
  1980. /*[IF*/
  1981. if(((C)->_first_one/*8*/)==((void*)(NULL))){
  1982. }
  1983.  else if(((C)->_remainder/*12*/)!=((void*)(NULL))){
  1984. R=(((T221*)((C)->_remainder/*12*/))->_upper/*8*/)+(2);
  1985. }
  1986. else{
  1987. R=1;
  1988. }
  1989. /*FI]*/
  1990. return R;
  1991. }
  1992.  
  1993.  
  1994. void r220make(T220* C,T0* a1,T0* a2,T0* a3){
  1995. C->_header_comment=a1;
  1996. C->_first_one=a2;
  1997. C->_remainder=a3;
  1998. }
  1999.  
  2000.  
  2001. void r220compile_to_jvm(T220* C){
  2002. T0* _ca=NULL;
  2003. T6 _trace=0;
  2004. T0* _instruction=NULL;
  2005. T2 _c=0;
  2006. T2 _i=0;
  2007. _c=r220count(C);
  2008. _ca=oBC12code_attribute;
  2009. _trace=((T76*)(oBC12run_control))->_trace/*4*/;
  2010. _i=1;
  2011. while (!((_i)>(_c))) {
  2012. _instruction=r220item(C,_i);
  2013. /*[IF*/
  2014. if(_trace){
  2015. r28se_trace(((T28*)_ca),(C)->_current_type/*4*/,X164start_position(_instruction));
  2016. }
  2017. /*FI]*/
  2018. X164compile_to_jvm(_instruction);
  2019. _i=(_i)+(1);
  2020. }
  2021. }
  2022.  
  2023.  
  2024. void r220afd_check(T220* C){
  2025. T2 _i=0;
  2026. _i=r220count(C);
  2027. while (!((_i)==(0))) {
  2028. X164afd_check(r220item(C,_i));
  2029. _i=(_i)-(1);
  2030. }
  2031. }
  2032. /*No:COMPOUND.remainder*/
  2033.  
  2034.  
  2035. void r220put(T220* C,T0* a1,T2 a2){
  2036. /*[IF*/
  2037. if((a2)==(1)){
  2038. C->_first_one=a1;
  2039. }
  2040. else{
  2041. /*[IRF3.5put*/(((T221*)((C)->_remainder/*12*/))->_storage/*0*/)[(a2)-(2)]=(a1);
  2042. /*]*/
  2043. }
  2044. /*FI]*/
  2045. }
  2046.  
  2047.  
  2048. void r220from_compound(T220* C,T0* a1){
  2049. C->_header_comment=(((T220*)a1))->_header_comment/*0*/;
  2050. C->_first_one=(((T220*)a1))->_first_one/*8*/;
  2051. C->_remainder=(((T220*)a1))->_remainder/*12*/;
  2052. /*[IF*/
  2053. if(((C)->_remainder/*12*/)!=((void*)(NULL))){
  2054. C->_remainder=r221twin((T221*)((C)->_remainder/*12*/));
  2055. }
  2056. /*FI]*/
  2057. }
  2058. /*No:COMPOUND.fatal_error*/
  2059. /*No:CREATION_CALL_1.start_position*/
  2060.  
  2061.  
  2062. T0* r251add_comment(T251* C,T0* a1){
  2063. T0* R=NULL;
  2064. /*[IF*/
  2065. if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
  2066. R=(T0*)C;
  2067. }
  2068. /*AF*/else{
  2069. {T229*n=malloc(sizeof(*n));
  2070. *n=M229;
  2071. r229make(n,(T0*)C,a1);
  2072. R=(T0*)n;
  2073. }
  2074. }
  2075. /*FI]*/
  2076. return R;
  2077. }
  2078.  
  2079.  
  2080. T6 r251use_current(T251* C){
  2081. T6 R=0;
  2082. R=X109use_current((C)->_writable/*8*/);
  2083. return R;
  2084. }
  2085.  
  2086.  
  2087. void r251check_created_type(T251* C,T0* a1){
  2088. T0* _rt=NULL;
  2089. _rt=X52run_type(a1);
  2090. /*[IF*/
  2091. if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
  2092. }
  2093.  else if(((T63*)(X52base_class(_rt)))->_is_deferred/*16*/){
  2094. r21add_type(_rt,((T0*)ms253_11858));
  2095. r251warning((C)->_start_position/*4*/,((T0*)ms253_30996));
  2096. }
  2097. /*FI]*/
  2098. /*[IF*/
  2099. if(X52is_formal_generic(a1)){
  2100. r21add_position((C)->_start_position/*4*/);
  2101. /*[IRF3.6append*/{T0* b1=((T0*)ms253_77140);
  2102. r7append((T7*)(oBC21explanation),b1);
  2103. }/*]*/
  2104. r21add_type(a1,((T0*)ms253_180));
  2105. r21print_as_fatal_error((T21*)(oBC12eh));
  2106. }
  2107. /*FI]*/
  2108. r23set_at_run_time((T23*)(X52run_class(_rt)));
  2109. }
  2110.  
  2111.  
  2112. T0* r251to_runnable(T251* C,T0* a1){
  2113. T0* R=NULL;
  2114. T0* _t=NULL;
  2115. /*[IF*/
  2116. if(((C)->_current_type/*12*/)==((void*)(NULL))){
  2117. r251check_writable(C,a1);
  2118. _t=X109result_type((C)->_writable/*8*/);
  2119. r251check_created_type(C,_t);
  2120. r251check_creation_clause(C,_t);
  2121. R=(T0*)C;
  2122. }
  2123. else{
  2124. {T251*n=malloc(sizeof(*n));
  2125. *n=M251;
  2126. r251make(n,(C)->_start_position/*4*/,(C)->_writable/*8*/);
  2127. R=(T0*)n;
  2128. }
  2129. R=r251to_runnable(((T251*)R),a1);
  2130. }
  2131. /*FI]*/
  2132. return R;
  2133. }
  2134.  
  2135.  
  2136. void r251warning(T0* a1,T0* a2){
  2137. r21add_position(a1);
  2138. r21warning((T21*)(oBC12eh),a2);
  2139. }
  2140. /*No:CREATION_CALL_1.current_type*/
  2141. /*No:CREATION_CALL_1.writable*/
  2142.  
  2143.  
  2144. T6 r251is_pre_computable(T251* C){
  2145. T6 R=0;
  2146. R=X109is_result((C)->_writable/*8*/);
  2147. return R;
  2148. }
  2149.  
  2150.  
  2151. void r251compile_to_jvm0(T0* a1){
  2152. T2 _dummy=0;
  2153. /*[IF*/
  2154. if(X52is_reference(a1)){
  2155. r23jvm_basic_new((T23*)(X52run_class(a1)));
  2156. }
  2157. else{
  2158. _dummy=X52jvm_push_default(a1);
  2159. }
  2160. /*FI]*/
  2161. }
  2162.  
  2163.  
  2164. void r251error(T0* a1,T0* a2){
  2165. r21add_position(a1);
  2166. r21error((T21*)(oBC12eh),a2);
  2167. }
  2168. /*No:CREATION_CALL_1.end_mark_comment*/
  2169.  
  2170.  
  2171. void r251make(T251* C,T0* a1,T0* a2){
  2172. C->_start_position=a1;
  2173. C->_writable=a2;
  2174. }
  2175.  
  2176.  
  2177. void r251check_writable(T251* C,T0* a1){
  2178. T0* _w=NULL;
  2179. C->_current_type=a1;
  2180. _w=X109to_runnable((C)->_writable/*8*/,a1);
  2181. /*[IF*/
  2182. if((_w)==((void*)(NULL))){
  2183. r21add_position(X109start_position((C)->_writable/*8*/));
  2184. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms253_64251);
  2185. r21fatal_error((T21*)(oBC12eh),b1);
  2186. }/*]*/
  2187. }
  2188. else{
  2189. C->_writable=_w;
  2190. }
  2191. /*FI]*/
  2192. }
  2193.  
  2194.  
  2195. void r251check_creation_clause(T251* C,T0* a1){
  2196. /*[IF*/
  2197. if(/*(IRF4.7has_creation_clause*/(((T63*)(X52base_class(a1)))->_creation_clause_list/*44*/)!=(NULL)/*)*/){
  2198. /*[IRF3.6append*/{T0* b1=((T0*)ms252_37098);
  2199. r7append((T7*)(oBC21explanation),b1);
  2200. }/*]*/
  2201. r21add_type(a1,((T0*)ms252_162));
  2202. r251error((C)->_start_position/*4*/,((T0*)ms252_46305));
  2203. }
  2204. /*FI]*/
  2205. }
  2206.  
  2207.  
  2208. void r251compile_to_jvm(T251* C){
  2209. T0* _t=NULL;
  2210. _t=X52run_type(X109result_type((C)->_writable/*8*/));
  2211. r251compile_to_jvm0(_t);
  2212. X52jvm_check_class_invariant(_t);
  2213. X109jvm_assign((C)->_writable/*8*/);
  2214. }
  2215. /*No:CREATION_CALL_1.afd_check*/
  2216. /*No:CREATION_CALL_1.fatal_error*/
  2217.  
  2218.